home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 2000 #5
/
Amiga Plus CD - 2000 - No. 5.iso
/
Tools
/
Misc
/
InstallerNG
/
developer
/
gui
/
example
/
igui_Welcome.c
< prev
next >
Wrap
C/C++ Source or Header
|
1999-10-31
|
12KB
|
271 lines
#include "includes.h"
#include "installergui_data.h"
/********************************************************************
*
* DESCRIPTION
*
* a very complex one :)
* this handles both WELCOME panels, stores the user-selected
* data (such as LOGFILE, USERMODE, PRETEND...) into the
* applications global environment (app->app_GlobalEnv)
*
* IN: application - pointer to the private application structure
* appname - the name of the application (i.e. the content
* of the @APPNAME variable)
* OUT: -
*/
/********************************************************************
*
* STATIC
*
*/
static APTR make_intro1(APTR, char *);
static APTR make_intro2(APTR);
static const struct Hook welcome_MXTwoHook = { { NULL, NULL }, (VOID *) guistuff_MXTwoFun, NULL, NULL };
static const struct Hook welcome_MXThreeHook = { { NULL, NULL }, (VOID *) guistuff_MXThreeFun, NULL, NULL };
static const struct Hook welcome_MXFourHook = { { NULL, NULL }, (VOID *) guistuff_MXFourFun, NULL, NULL };
static const struct Hook welcome_SetValHook = { { NULL, NULL }, (VOID *) guistuff_SetValFun, NULL, NULL };
/********************************************************************
*
* EXTERN
*
*/
/********************************************************************
*
* PUBLIC
*
*/
/********************************************************************
*
* CODE
*
*/
void __asm igui_Welcome(register __a0 APTR application, register __a1 char *appname)
{
#ifdef DEBUG
DEBUG_MAKRO
#endif
{
struct Application *app = (struct Application *) application;
// set the help text
igui_SetHelp(app, app->app_Texts[HELP_INTRO1]);
// make a new panel an display it
if (!guistuff_NewContent(app, make_intro1(app, appname))) { app->app_Error = GUIERROR_NO_GUI_OBJECT; return; }
// wait for user input
igui_WaitApp(app);
if (!igui_QuitApp(app))
{
// only if the selected user is AVERAGE or EXPERT, we have to set up
// the second panel
if (app->app_GlobalEnv[GENV_USER] != USER_NOVICE)
{
if (!guistuff_NewContent(app, make_intro2(app))) { app->app_Error = GUIERROR_NO_GUI_OBJECT; return; }
igui_SetHelp(app, app->app_Texts[HELP_INTRO2]);
igui_WaitApp(app);
}
}
igui_EmptyPanel(app);
return;
}
}
/********************************************************************/
// create the panel for the first intro
static APTR make_intro1(APTR application, char *appname)
{
struct Application *app = (struct Application *) application;
char *welcometext;
APTR IM_novice, IM_average, IM_expert,
obj = NULL;
// create the welcome text
welcometext = sav_StringF2(app->app_Texts[INTRO1_WELCOME], &appname);
if (!welcometext) { }
else
{
obj = GroupObject,
Child, TextObject,
MUIA_Frame, MUIV_Frame_None,
MUIA_Text_Contents, welcometext,
MUIA_Text_SetMin, TRUE,
MUIA_Text_PreParse, "\33c",
End,
Child, HVSpace,
Child, GroupObject,
MUIA_Frame, MUIV_Frame_Group,
MUIA_FrameTitle, app->app_Texts[INTRO1_MODE],
MUIA_Group_Horiz, TRUE,
Child, HVSpace,
Child, GroupObject,
MUIA_Group_Columns, 2,
Child, IM_novice = guistuff_InitRadio((app->app_GlobalEnv[GENV_DEFUSER]==USER_NOVICE)?TRUE:FALSE,
(app->app_GlobalEnv[GENV_MINUSER]>USER_NOVICE)?TRUE:FALSE),
Child, LLabel(app->app_Texts[INTRO1_NOVICE]),
Child, IM_average = guistuff_InitRadio((app->app_GlobalEnv[GENV_DEFUSER]==USER_AVERAGE)?TRUE:FALSE,
(app->app_GlobalEnv[GENV_MINUSER]>USER_AVERAGE)?TRUE:FALSE),
Child, LLabel(app->app_Texts[INTRO1_AVERAGE]),
Child, IM_expert = guistuff_InitRadio((app->app_GlobalEnv[GENV_DEFUSER]==USER_EXPERT)?TRUE:FALSE,
FALSE),
Child, LLabel(app->app_Texts[INTRO1_EXPERT]),
End,
Child, HVSpace,
End,
Child, HVSpace,
End;
if (obj)
{
DoMethod(IM_novice, MUIM_Notify, MUIA_Pressed, TRUE,
MUIV_Notify_Self, 5, MUIM_CallHook, &welcome_MXThreeHook, IM_novice, IM_average, IM_expert);
DoMethod(IM_average, MUIM_Notify, MUIA_Pressed, TRUE,
MUIV_Notify_Self, 5, MUIM_CallHook, &welcome_MXThreeHook, IM_average, IM_novice, IM_expert);
DoMethod(IM_expert, MUIM_Notify, MUIA_Pressed, TRUE,
MUIV_Notify_Self, 5, MUIM_CallHook, &welcome_MXThreeHook, IM_expert, IM_novice, IM_average);
DoMethod(IM_novice, MUIM_Notify, MUIA_Pressed, TRUE,
MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_USER]), USER_NOVICE);
DoMethod(IM_average, MUIM_Notify, MUIA_Pressed, TRUE,
MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_USER]), USER_AVERAGE);
DoMethod(IM_expert, MUIM_Notify, MUIA_Pressed, TRUE,
MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_USER]), USER_EXPERT);
}
}
return(obj);
}
/********************************************************************/
static APTR make_intro2(APTR application)
{
struct Application *app = (struct Application *) application;
APTR IM_pretend, IM_real, IM_printer, IM_file, IM_nolog, IM_console;
APTR CM_debug, CM_startup, CM_uninstall, CM_dontdelsysdir, CM_packagecomment, CM_alwaysconfirm;
APTR obj;
obj = GroupObject,
Child, GroupObject,
MUIA_Frame, MUIV_Frame_Group,
MUIA_FrameTitle, app->app_Texts[INTRO2_OPTS],
MUIA_Group_Horiz, TRUE,
Child, HVSpace,
Child, GroupObject,
MUIA_Group_Columns, 2,
Child, IM_real = guistuff_InitRadio(TRUE, FALSE),
Child, LLabel(app->app_Texts[INTRO2_REAL]),
Child, IM_pretend = guistuff_InitRadio(FALSE, !(app->app_GlobalEnv[GENV_ALLOW_PRETEND])),
Child, LLabel(app->app_Texts[INTRO2_PRETEND]),
End,
Child, HVSpace,
End,
Child, HVSpace,
Child, GroupObject,
MUIA_Frame, MUIV_Frame_Group,
MUIA_FrameTitle, app->app_Texts[INTRO2_LOG],
MUIA_Group_Horiz, TRUE,
Child, HVSpace,
Child, GroupObject,
MUIA_Group_Columns, 2,
Child, IM_printer = guistuff_InitRadio(FALSE, !(app->app_GlobalEnv[GENV_ALLOW_PRINT])),
Child, LLabel(app->app_Texts[INTRO2_PRINTER]),
Child, IM_file = guistuff_InitRadio(FALSE, !(app->app_GlobalEnv[GENV_ALLOW_LOG])),
Child, LLabel(app->app_Texts[INTRO2_FILE]),
Child, IM_console = guistuff_InitRadio(FALSE, FALSE),
Child, LLabel(app->app_Texts[INTRO2_CONSOLE]),
Child, IM_nolog = guistuff_InitRadio(TRUE, FALSE),
Child, LLabel(app->app_Texts[INTRO2_NONE]),
End,
Child, HVSpace,
End,
Child, HVSpace,
Child, GroupObject,
MUIA_Frame, MUIV_Frame_Group,
MUIA_FrameTitle, app->app_Texts[INTRO2_ADVANCED],
MUIA_Group_Horiz, TRUE,
Child, HVSpace,
Child, GroupObject,
MUIA_Group_Columns, 4,
Child, Label(app->app_Texts[INTRO2_DEBUG]),
Child, CM_debug = CheckMark(app->app_GlobalEnv[GENV_DEBUGMODE]),
Child, Label(app->app_Texts[INTRO2_NOSTARTUPSEQUENCE]),
Child, CM_startup = CheckMark(app->app_GlobalEnv[GENV_STARTUP]),
Child, Label(app->app_Texts[INTRO2_UNINSTALL]),
Child, CM_uninstall = CheckMark(app->app_GlobalEnv[GENV_UNINSTALL]),
Child, Label(app->app_Texts[INTRO2_DONTDELFROMSYSDIRS]),
Child, CM_dontdelsysdir = CheckMark(app->app_GlobalEnv[GENV_DONTDELFROMSYSDIRS]),
Child, Label(app->app_Texts[INTRO2_PACKAGE_COMMENT]),
Child, CM_packagecomment = CheckMark(app->app_GlobalEnv[GENV_PACKAGE_COMMENT]),
Child, Label(app->app_Texts[INTRO2_ALWAYSCONFIRM]),
Child, CM_alwaysconfirm = CheckMark(app->app_GlobalEnv[GENV_ALWAYSCONFIRM]),
End,
Child, HVSpace,
End,
Child, HVSpace,
End;
if (obj)
{
// mx
DoMethod(IM_real, MUIM_Notify, MUIA_Pressed, TRUE,
MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_MXTwoHook, IM_real, IM_pretend);
DoMethod(IM_pretend, MUIM_Notify, MUIA_Pressed, TRUE,
MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_MXTwoHook, IM_pretend, IM_real);
DoMethod(IM_real, MUIM_Notify, MUIA_Pressed, TRUE,
MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_INSTALL]), INSTALL_FOR_REAL);
DoMethod(IM_pretend, MUIM_Notify, MUIA_Pressed, TRUE,
MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_INSTALL]), INSTALL_PRETEND);
DoMethod(IM_printer, MUIM_Notify, MUIA_Pressed, TRUE,
MUIV_Notify_Self, 6, MUIM_CallHook, &welcome_MXFourHook, IM_printer, IM_file, IM_console, IM_nolog);
DoMethod(IM_file, MUIM_Notify, MUIA_Pressed, TRUE,
MUIV_Notify_Self, 6, MUIM_CallHook, &welcome_MXFourHook, IM_file, IM_printer, IM_console, IM_nolog);
DoMethod(IM_console, MUIM_Notify, MUIA_Pressed, TRUE,
MUIV_Notify_Self, 6, MUIM_CallHook, &welcome_MXFourHook, IM_console, IM_file, IM_printer, IM_nolog);
DoMethod(IM_nolog, MUIM_Notify, MUIA_Pressed, TRUE,
MUIV_Notify_Self, 6, MUIM_CallHook, &welcome_MXFourHook, IM_nolog, IM_file, IM_console, IM_printer);
DoMethod(IM_printer, MUIM_Notify, MUIA_Pressed, TRUE,
MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_LOG]), LOG_PRINTER);
DoMethod(IM_file, MUIM_Notify, MUIA_Pressed, TRUE,
MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_LOG]), LOG_FILE);
DoMethod(IM_console, MUIM_Notify, MUIA_Pressed, TRUE,
MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_LOG]), LOG_CONSOLE);
DoMethod(IM_nolog, MUIM_Notify, MUIA_Pressed, TRUE,
MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_LOG]), LOG_NOLOG);
// checkmarks
DoMethod(CM_uninstall, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_UNINSTALL]), !(app->app_GlobalEnv[GENV_UNINSTALL]));
DoMethod(CM_startup, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_STARTUP]), !(app->app_GlobalEnv[GENV_STARTUP]));
DoMethod(CM_debug, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_DEBUGMODE]), !(app->app_GlobalEnv[GENV_DEBUGMODE]));
DoMethod(CM_packagecomment, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_PACKAGE_COMMENT]), !(app->app_GlobalEnv[GENV_PACKAGE_COMMENT]));
DoMethod(CM_alwaysconfirm, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_ALWAYSCONFIRM]), !(app->app_GlobalEnv[GENV_ALWAYSCONFIRM]));
DoMethod(CM_dontdelsysdir, MUIM_Notify, MUIA_Selected, MUIV_EveryTime,
MUIV_Notify_Self, 4, MUIM_CallHook, &welcome_SetValHook, &(app->app_GlobalEnv[GENV_DONTDELFROMSYSDIRS]), !(app->app_GlobalEnv[GENV_DONTDELFROMSYSDIRS]));
}
return(obj);
}